Today's mobile devices, especially today's low-end mobile devices, are severely challenged by multi-tasking scenarios. It is often the case that, in order to be competitive at scale, mobile devices must be manufactured using low-end and/or low-powered parts. This is true in particular for the memory used to implement mobile devices, which includes random access memory (RAM), MultiMediaCards (MMCs) and Secure Digital (SD) cards. The net effect of this is that conventional mobile devices that rely on paging for memory management fall over very quickly when trying to concurrently run multiple processes. This leads to a very poor user experience and handicapped multi-tasking scenarios. This problem is becoming especially relevant as the applications and operating systems being developed for mobile devices become larger and larger while the marketplace demands reduced manufacturing costs.
Previously, the issue of having insufficient memory to support the concurrent execution of multiple processes on a mobile device was handled in one or more of the following ways: the use of paging for memory management; providing more memory on the mobile device; and placing limits on the size of applications and operating systems. As noted above, paging can lead to a very poor user experience and handicapped multi-tasking scenarios. Providing more memory drives up mobile device cost, complexity and power consumption. Placing size limits on applications and operating systems makes developing and delivering desired functionality to users extremely difficult. For at least these reasons, existing memory management solutions for mobile devices are deficient. Better memory management techniques are needed to enable today's mobile devices to concurrently execute multiple processes in a manner that does not adversely impact user experience and that enables a wide variety of multi-tasking scenarios.